"""
字符串的常用操作方法有：查找、修改、判断，三大类
1、查找：
  所谓字符串查找方法即使查找子串在字符串中的位置或出现的次数
    1.1 find()：检测某个子串是否包含在这个字符串中，如果在返回这个子串开始的位置下标，否则则返回-1
        语法：字符串序列.find(子串,开始位置下标,结束位置下标)，开始和结束位置下标可以省略，省略则表示在整个字符串序列中查找
    1.2 index()：与find查找的含义是一样的，不同的是，find查找不到返回-1，而index找不到则会报错
        语法：字符串序列.index(子串,开始位置下标,结束位置下标)，开始和结束位置下标可以省略，省略则表示在整个字符串序列中查找
    1.3 rfind()：和find()功能相同，区别是：find是从左往右查找的，rfind是从右往左查找的。
    1.4 rindex()：和index()功能相同，区别是：index是从左往右查找的，rindex是从右往左查找的。
    1.5 count()：返回某个子串在字符串中出现的次数
        语法：字符串序列.count(子串,开始位置下标,结束位置下标)，开始和结束位置下标可以省略，省略则表示在整个字符串序列中查找
2、修改：
   所谓修改字符串，指的就是通过函数的形式修改字符串中的数据
    2.1 replace()：替换
        语法：字符串序列.replace(旧子串,新子串,替换次数)    如果替换的次数超出子串出现的次数，则替换次数为该子串出现次数
    2.2 split()：按照指定字符分割字符串
        语法： 字符串序列.split(分个字符,num)       num表示的是分隔字符出现的次数，及将来返回数据个数为num+1个
    2.3 join()：用一个字符或子串合并字符串，即使将多个字符串合并成一个新的字符串
        语法：字符或子串.join(多字符串组成的序列)
    2.4 capitalize() 将字符串第一个字符转换成大写
    2.5 lower()：将字符串中的大写转换成小写
    2.6 upper(): 将字符串中的小写转换成大写
    2.7：title()：将每个单词首字母换成大写
    2.8 strip() 删除字符串两侧的空白字符
    2.9 center() 居中补全到指定长度

3、判断：
   所谓判断既是判断真假，返货单结果是布尔型数据类型：True 或False
    3.1 startswith()： 判断字符串是否是以指定子串开头，是 则返回True，否 则返回False，如果设置开始和结束位置下标，则在指定范围内检查
        语法：字符串序列.startswith(子串，开始位置下标，结束位置下标)
    3.2 endswith()： 检查字符串是否是以指定子串结尾，是 则返回True，否 则返回False，如果设置开始和结束位置下标，则在指定范围内检查。
        语法：字符串序列.endswith(子串，开始位置下标，结束位置下标)
"""

# # 1.1   find()查找：查找子串的下标
# str1 = "这 是 一个find查找的例子，可以从中查找子串，一个 空-格也算一个字符，这还有一个空-格的字符，一共有两个"
# print(str1.find("空-格"))  # 返回结果下标为 28，可以使用  print(str1[28])  命令查看下标28是不是查找字段的第一个字
# print(str1.find("空格"))  # 返回结果为-1.因为这个子串找不到，上方字符串内的空格中间里有一个横杠-
# print(str1.find("空-格", 29, 200))  # 返回结果为 43，返回的是后面那个空-格的字符下标，因为第一个空格的下标为28，这个是从下标29开始，所以直接跳过前面那个字符了。
# print(str1.find("空-格", 26, -1))  # 返回结果为 28，其实输入-1毫无意义，基本上是没有这样使用的，这个-1可以代表列表的最后一个数值
#
# # 1.2    index()查找：查找子串的下标
# str2 = "这 是 一个find查找的例子，可以从中查找子串，一个 空-格也算一个字符，这还有一个空-格的字符，一共有两个"
# print(str2.index("字符"))  # 返回结果是 35，这个返回结果和find的方法是一样的。
# print(str2[35])  # 为了查看字符串下标35是不是上面所查找的那个字符
# # print(str2.index("字-符"))  # 没有这个子串，find的返回结果是-1，而index的返回结果是直接报错。
#
# # 1.3 rfind()查找：查找子串的下标，从右边开始
# str3 = "这 是 一个find查找的例子，可以从中查找子串，一个 空-格也算一个字符，这还有一个空-格的字符，一共有两个"
# print(str3.rfind("还有"))
# print(str3[39])
#
# # 1.4 rindex()查找：查找子串的下标，从右边开始
# str4 = "这 是 一个find查找的例子，可以从中查找子串，一个 空-格也算一个字符，这还有一个空-格的字符，一共有两个"
# print(str4.rindex("两个"))
# print(str4[53])
#
# # 1.5 count()查找：统计子串在字符串中出现的次数
# str5 = "这 是 一个find查找的例子，可以从中查找子串，一个 空-格也算一个字符，这还有一个空-格的字符，一共有两个"
# print(str5.count("一"))  # 一共出现了5次"一"
# print("============================== *************** ==============================")
#
# # 2.1 replace()：替换
# replace1 = "这是一个即将一被一替换一语法一给一替换一的一句子一，中间多写几个一是为了更好的替换"
# print(replace1.replace("一", "one"))  # 这里将第一个"一"替换成了"one"
# print(replace1.replace("一", "1", 6))  # 替换前面的6个"一"；这里将从第一个"一"开始，往后的6个"一"都替换成了"1"，,6个过后的一就没有被替换了。
# print(replace1)  # 注：只是上方的所打印的字符串给替换了，实际上并没有替换原句的内容

# 2.2 split()：按照指定字符分割字符串
split1 = "这是一个即将要被，函数一给分隔的一字符串内容"
print(split1.split("一"))  # 这个是将字符串中所有的"一"都给分隔成了逗号，且所被分隔的字符都没有了
# print(split1.split("一", 2))  # 这里是指指定分隔几个字符内容，如上面语句中有三个"一"，而此语法中指定了2个，则第三个不会被分隔；
#
# # 2.3 join()拼接成一个新的序列
# join1 = ["这是一个列表", "这是第二句话", "这是后面的", "这是最后面的"]
# join2 = ("这是一个元组", "这是第二个内容", "这是第三个内容", "这是最后一个内容")
# join3 = ["这个语法只针对于纯字符串的形式，不同的类型是没用的，会报错", "后面加两个数字看看", 2, 3]
# print("*".join(join1))  # 这是使用*将列表中的好几个内容拼接成了一个新的内容
# print("_".join(join2))  # 同上，也是使用变量将元组内的好几个内容拼接成了一个新的内容
# print("---".join(join3))  # 这是就是个错误的示范，对于非字符串来说，拼接就会报错。

# # 2.4 capitalize() 将字符串第一个字符转换成大写
# list1 = "zhe shi yi ge Lie Biao"
# print(list1.capitalize())  # 只会将将首字母转换成了大写，而其余字母则全换成了小写
#
# # 2.5 lower()：将字符串中的大写转换成小写
# list2 = "zhe shi Yi GE Lie Biao"
# print(list2.lower())
#
# # 2.6 upper():将字符串中的小写转换成大写
# list3 = "zhe shi Yi GE Lie Biao"
# print(list3.upper())
#
# # 2.7title()： 将每个单词的首字母换成大写
# list8 = "zhe ju hua shi jiang mei ge dan ci de shou zi mu cong xiao xie huan cheng da xie"
# print(list8.title())
#
# # 2.8 strip() 删除字符串两侧的空白字符
# list6 = "    这次是删除左右两侧的空白字符    "
# print(list6.strip())
# print(list6, "看一下没删除之前的效果")
#
# # 2.9 center() 居中补全到指定长度
# list7 = "Hello word"
# print(list7.center(20))  # 补充到20位字符，其余两头默认添加空格
# print(list7.center(20, "+"))  # 补充到20位字符的长度，两头使用所传入的值进行填充
#
# # 3.1 startswith()： 判断字符串是否是以指定子串开头，是 则返回True，否 则返回False
# mystr1 = "这是一条判断的语法"
# print(mystr1.startswith("这是"))  # 这句话是以"这是"开头的，所以返回的是True
# print(mystr1.startswith("是"))  # 这句话不是以"是"开头的，所以返回的是false
#
# # 3.2 endswith()： 检查字符串是否是以指定子串结尾，是 则返回True，否 则返回False
# mystr2 = "这也是一条判断的语法"
# print(mystr2.endswith("语法"))  # 这句话是以"语法"结尾的，所以返回的是True
# print(mystr2.endswith("语"))  # 这句话是不是以"语"结尾的，所以返回的是True
